package com.hua.util;

import com.hua.common.ResponseCode;
import com.hua.common.Response;

/**
 * @author chenlong
 * @version jdk1.8
 * @dscription ProjectOfMilk ResultUtils
 * @date 2022/10/18 22:48
 */
public class ResultUtils {

    private ResultUtils(){}

    /**
     * 得到对应的基础响应
     * @param <T> 泛型 <T></T>
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(){
        return new Response<>();
    }

    /**
     * 得到对应的基础响应
     * @param responseCode 响应码 的枚举类
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(ResponseCode responseCode, String msg){
        return new Response<>(responseCode.getCode(), null, msg);
    }

    /**
     * 得到对应的基础响应
     * @param <T> 泛型 <T></T>
     * @param token token
     * @param msg 基础相应的信息
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(ResponseCode responseCode, T data, String token, String msg){
        return new Response<>(responseCode.getCode(),data,token,msg);
    }

    /**
     * 得到对应的基础响应
     * @param <T> 泛型 <T></T>
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(ResponseCode responseCode, T data, String token){
        return new Response<>(responseCode.getCode(),data,token,"");
    }

    /**
     * 得到对应的基础响应
     * @param <T> 泛型 <T></T>
     * @param data 返回的数据
     * @param msg 返回的信息
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(T data, String msg){
        return new Response<>(data,msg);
    }

    /**
     * 得到对应的基础响应
     * @param <T> 泛型 <T></T>
     * @param data 返回的数据
     * @return   返回 Response<T>类型
     */
    public static <T> Response<T> success(T data){
        return new Response<>(data,"");
    }

    /***
     * 得到对应的基础响应
     * @param code 响应码
     * @param message 响应的信息
     * @param description 响应的详细信息
     * @return 返回 Response<T>类型
     */
    public static Response<ResponseCode> error(int code, String message, String description) {

        return new Response<>(code,null,message,description);
    }

    /**
     * 得到对应的基础响应
     * @param code 响应码的枚举类
     * @param message 响应的信息
     * @return 返回 Response<T>类型
     */
    public static Response<ResponseCode> error(ResponseCode code, String message) {
        return new Response<>(code.getCode(),null,null,message);
    }
}

